package com.zjdiepu.www.dao.base;

import java.util.List;
import java.util.Set;

import org.apache.ibatis.annotations.Param;

import com.zjdiepu.www.model.base.dto.DpBaseDataDictionary;
import com.zjdiepu.www.model.base.ext.DpBaseDataDictionaryExt;

/**
 * 数据字典dao层操作<br/>
 * @author xiongxiaotun<br/>
 * @time 2017年04月06日 16时04分<br/>
 * @since 1.0<br/>
 */
public interface DpBaseDataDictionaryMapper {
	/**
	 * 主键删除
	 * @param id
	 * @return
	 */
	int deleteByPrimaryKey(String id);

	/**
	 * 添加记录
	 * 
	 * @param dpBaseDataDictionary
	 * @return
	 */
	int insert(DpBaseDataDictionary dpBaseDataDictionary);

	/**
	 * 批量添加记录
	 * @param dpBaseDataDictionarys
	 * @return
	 */
	int insertBatch(List<DpBaseDataDictionary> dpBaseDataDictionarys);

	/**
	 * 主键查询
	 * @param id
	 * @return
	 */
	DpBaseDataDictionary selectByPrimaryKey(String id);

	/**
	 * 主键更新：只更新不是null值字段，字符串还要求trim()后长度不为0
	 * @param dpBaseDataDictionary
	 * @return
	 */
	int updateByPrimaryKeySelective(DpBaseDataDictionary dpBaseDataDictionary);

	/**
	 * 主键更新
	 * @param dpBaseDataDictionary
	 * @return
	 */
	int updateByPrimaryKey(DpBaseDataDictionary dpBaseDataDictionary);
	
	/**
	 * 条件查询
	 * @param dpBaseDataDictionaryExt
	 * @return
	 */
	List<DpBaseDataDictionary> selectByExt(DpBaseDataDictionaryExt dpBaseDataDictionaryExt);
	
	/**
	 * 条件统计
	 * @param dpBaseDataDictionaryExt
	 * @return
	 */
	int countByExt(DpBaseDataDictionaryExt dpBaseDataDictionaryExt);
	
	/**
	 * 根据主键清除空字段，设置值为null
	 * @param fieldNames 字段名
	 * @param id 主键
	 */
	void clearEmpty(@Param("fieldNames") Set<String> fieldNames, @Param("id") String id);
}